Minja

如何用 RSS 实现个性化订阅 | 实用技巧

用 RSS 订阅各种信息,是信息流愈发汹涌后我们将面对的一个自然阶段。而 RSS 订阅源,则是整个阅读的基础。身为读者,我们淘 RSS 订阅源的样子很像 iOS 自动化玩家遍地搜罗 URL Scheme,每找到一个都能高兴上很久。

不少网站会摆上 RSS 订阅图标,即使没找到,Google 一下 网站名 + RSS,也往往有热心人分享。

少数派就提供了 RSS 订阅

可对于高级玩家来说,他们已经不满足囫囵订阅整个网站,而是需要精确订阅某个页面,比如:

  • 我关注的知乎答主最近有啥动态?
  • 我在追的动漫这周更新了没?
  • 豆瓣小组最近在讨论什么?
  • ……

这些细分的板块、栏目和个人主页,往往都不提供 RSS 订阅源。如果挖到一个很感兴趣的网页,却卡在订阅源这一站,着实是一件让人丧气的事儿。

还好,已经有一些 RSS 地址烧录服务,RSSHub 就是我最常用的一个。但每次去 RSSHub 网页上烧录链接仍然不够方便,所以我专门做了个捷径,可以烧录常见网站的用户、栏目页面,生成专门的订阅地址

订阅知乎专栏到 Newsblur

> 捷径下载 🔗

目前这个捷径支持了大量热门网站的栏目,包括微信、知乎、豆瓣、YouTube……更多网站可以在 RSSHub 页面上找到。

小知识:「烧录」是怎么来的 🔥

生成一个 RSS 链接,为啥要说成「烧录」?其实这个词来自硬件的制作工艺,比如光盘,要用激光把信息「烧」上去。后来各种生成信息的操作都可以沿用这一称呼,很有画面感、工坊气。在 RSS 领域,Google FeedBurner 是较早开始用「烧录(burn)」一词的,本文也把生成链接的操作冠以「烧录」之名字。

捷径的使用

拿到这个捷径之后,你完全不用搭理其他操作,只需要干两件事:

  1. 列表里添加想订阅的网站(需要在 ./ 前面添加 \ 进行转义,避免稍后匹配网站出错)。
  2. 词典里添加网站和对应的 RSSHub 前缀(这回不需要转义)。
只需自行配置列表和词典

添加好列表后,日常使用基本就没问题了。当你在浏览器里看到一个感兴趣的页面,就可以通过分享菜单运行这个捷径,稍等就能拷贝订阅地址到剪贴板。

接下来的部分主要面向对捷径制作感兴趣的读者,不读也不影响使用,但如果你想知道正则表达式和字典的玩法,或者好奇我怎样把几百步的捷径压缩到十几步,就不要错过下面的内容。

本文知识点:

  1. 匹配文本操作:通过正则表达式替代冗长的 if 判断
  2. 词典操作:用词典存储常用网站列表

捷径原理

生成 RSS 订阅的地址的捷径老早就有构思,但是旧版很简陋,只是不断通过 if 操作来识别网站,然后生成对应的订阅地址。但这样的捷径会有几十个连环的 if 嵌套,难看不说,别人想增改一下订阅源也无从下手,所以旧版的动作我一直拿不出手。直到把近百步缩短到十几步1

已经算上检查剪贴板、拷贝链接这些样板式操作。
 ,我才觉得这个捷径改进得差不多,可以拿来和大家分享。

缩短后的捷径只有 17 步

一般我们需要自行烧录的网页都是不提供 RSS 订阅源的,比如知乎的用户主页、哔哩哔哩的 UP 主的个人空间,RSSHub 为这些页面生成的订阅链接很有规律,一般是「链接前缀 + 网页 id」。

RSSHub 所生成的链接很有规律

所以,捷径的工作原理其实很清晰:

  1. 识别当前的网站是什么
  2. 匹配对应的 RSSHub 链接前缀
  3. 提取网页 id,和前缀拼接起来
原理示意图(链接虚构)

用正则匹配来代替 if 判断

原先的动作又长又烂,问题就出在 if 操作。

if 操作其实很傻,它会不断问你:喝点咖啡吗?不喜欢的话,红茶呢?绿茶呢?奶茶呢?没完没了。事实上,当你去朋友家里做客,只要他不是存心想赶你走,客套话都只需要一句「喝点啥」。

显然,如果能在捷径里实现「喝点啥」的效果,整个流程就非常简洁了。

if 实在是太啰嗦了

替代方案的灵感来自和 Hum 的一次交流。当时我在改进一个解压文件的捷径,为了达到同时支持 zip、rar、tar 等压缩包的目的,嵌套了好几层 if,非常累赘。经过 Hum 提醒,我改用了「匹配文本」的操作。

捷径里的匹配文本操作支持正则表达式,匹配方式更灵活,只需事先准备好多个待选项,再进行一次正则匹配,匹配成功任意一项就能接着后面的操作(解压文件), 没有没完没了的 if 问话。

在解压的捷径里,我用 zip|rar|tar 来表示「ziprartar 」(其中 | 意味着「或者」),如果匹配成功,统计到的匹配项数量就会大于 0。这样,短短几步就能识别出传入的文件是不是我要的压缩包类型。

识别传入文件的类型

匹配文本同样适合拿来识别网站。现在,回过头去优化 RSS 订阅的捷径。和识别压缩包的方法类似,稍后我们要填进「匹配文本」操作的文本是 网站A|网站B|网站C……,只要你有需求,再追加几十个网站也没问题。一般我们取网站的部分域名即可,比如少数派的知乎专栏,取 zhuanlan.zhihu.com 就足够和其他网站区分开来。不过 . 要换成 \. 进行转义,以保证能够正常匹配。2

. 在正则表达式里有特殊含义,表示「任何字符」,需要在前面加上斜杠\ 来转成普通的英文句号。
 

不过,如果你真的要加一大堆网站,直接在匹配文本的小框里打字会很累,所以我们换个更轻松的办法:把网站挨个填在列表操作里,在通过「合并文本」拼在一起。当然,为符合正则表达式,合并时的分隔符要用 |

识别网站

这番改动并不影响网站的识别,但是可以让增加或删除网站变得很舒服,点点列表项目前的加减符号就成了。

需要留意,在 iPhone 和 iPad 上编辑这个捷径时少有不同,因为部分网页在 iPad 上显示的是电脑版,比如哔哩哔哩在 iPad 上的网址就是 space.bilibili.com 开头(上图里展示的就是电脑版网址),而在 iPhone 上则是 m.bilibili.com/space 打头。如果你经常跨设备烧录 RSS 地址,不妨把两版网站都加进列表(稍后编辑词典时也最好添加两个版本)。

用字典来存储链接前缀

识别完网站,马上就要烧录 RSS 地址了。说是烧录,其实只是把网页链接末尾的 id 加到 RSSHub 前缀上,直接在文本框里拼接就成。不过在识别之后、拼接之前,还要解决一个大问题:如何调用网站对应的前缀

答案就是构建一本词典。

词典嘛,这个简单,查汉语词典时按拼音或者部首去找词语,我们都会。捷径里的词典也和纸质词典有异曲同工之妙,同样是根据一个(相当于拼音或部首)来查找一个(相当于词语)。

我们刚才识别过的网站名,顺势就可以拿来当键,而值就是对应的 RSSHub 链接前缀了。这么一想,很快就能在捷径里做出一个词典来。

拼接出订阅地址

你还可以继续丰富这个词典,把其他想订阅的网站添加进去。具体链接可以在 RSSHub 上找,如果想让烧出来的 RSS 源稳定一点,你也可以按 RSSHub 的指导文档自己搭建烧录服务器。

提取网页 id

最后的拼接步骤难度不大,还是依靠匹配文本的操作。多数网页链接后面的 id 比较有规律,经过测试,我这个捷径也支持了知乎、豆瓣、哔哩哔哩、微信公众号、简书等常见站点,不过还是希望大家简单了解一下匹配的依据,遇到特殊的网页也能调整表达式。

以少数派的知乎专栏为例,如果我想通过 RSS 知道少数派专栏的动态,就需要从链接中提取出 sspai 部分拿去拼接。

提取末尾的 id 和前缀拼接

观察一下刚才提取的 id,其实就是链接末尾的一串英文;如果再观察几个其他网页,会发现还有数字类型的 id。如果 id 都是英文加数字结尾,那么直接用 [0-9a-zA-Z]*$ 就好了——表示匹配「结尾是任意英文数字的组合」。不过还有一类链接——比如哔哩哔哩的 UP 主空间——后面会跟着一串小尾巴,所以在提取 id 前我们还要先截掉烦人的尾巴。所幸尾巴一般是 ? 打头的,删掉 \?.* 所代表的「? 后的内容」就行。

去掉尾巴后再拼接(链接虚构)

把删除尾巴、提取 id 的步骤连起来,再加一个文本框,把前缀、id 拼接起来,就获得订阅地址了。

拼接出订阅地址

最后剩下订阅 RSS,该用 URL Scheme 就用 URL Scheme,不支持跳转的就直接打开某某 App,或者把链接拷贝到剪贴板,这部分就给大家自己发挥了。

试着订阅几个网页,它们都成功显示在了 RSS 阅读器里。其中微信公众号由于官方限制,不能直接在微信里烧录,需要借助即刻 App 里对应的专题当跳板,拿即刻链接来烧才奏效。

知乎专栏、微信公众号和哔哩哔哩 UP 主空间都订阅成功

小结

用了一段时间这个捷径后,我发现自己的阅读习惯也有了改变:在移动设备上读 RSS 的时间变长了。备着这样一个小工具,偶然扒到一个有意思的博主,也不用按耐到回家开电脑才能订阅他,感兴趣就烧录下来。以前读 RSS 有点像用 iTunes 听歌,一般得在电脑上搞好歌单(订阅好 RSS),再到手机上欣赏(阅读);现在移动设备也能独立完成整个在线阅读流程:从阅读、发现、订阅到阅读的回环。


137

您好,为了保护少数派用户创造的内容、维护良好的社区氛围,我们将从 2019 年 6 月 10 日起实行新的《少数派评论规范》,具体内容您可以通过相关页面了解,感谢您对少数派的理解与支持。(๑•ᴗ•๑)

精选评论 (3)

我的评论

Daitiger
很有用,弱弱问一下微信订阅号怎么找到网址呢?

另外,有一个小bug可以修复一下,运行完捷径后生成的URL最后多了一个小空格,导致Inoreader 不能识别URL,删掉小空格就没问题了

付费内容组
Daitiger 君:订阅号文章不能直接制作链接,需要在即刻 App 里找对应主题,用即刻中的链接进行烧录。

小尾巴已斩掉,谢谢指出(其实它是个换行符 🙈

by Minja

albus1993
这个捷径实在是很实用了~~~~

目录

捷径的使用

捷径原理

用正则匹配来代替 if 判断

用字典来存储链接前缀

提取网页 id

小结